/*
 * To change this license header, choose License Headers in Project Properties.
 * To change this template file, choose Tools | Templates
 * and open the template in the editor.
 */

package controllers;
import play.*;
import play.mvc.*;
import play.data.*;
import static play.data.Form.*;
import play.db.jpa.*;
import views.html.*;

import javax.persistence.*;

import play.data.format.*;
import play.data.validation.*;

import models.*;


public class Personas extends Controller {
    
    public static Result blank() {
        return ok(personas.render());
    }

    @Transactional(readOnly=true)
    public static Result newPersona() {
    Form<Persona> personaForm = form(Persona.class);
    return ok(createFormPersona.render(personaForm));
    }

    @Transactional(readOnly=true)
    public static Result list(){
        return ok(listPersonas.render(Persona.page()));
    }


    @Transactional
    public static Result save() {
        Form<Persona> personaForm = form(Persona.class).bindFromRequest();
        System.out.println("FORMULARIO de Persona: " + personaForm);
        if(personaForm.hasErrors()) {
            return badRequest(createFormPersona.render(personaForm));
        }
        personaForm.get().save();
        flash("success",  "Persona , "  +  personaForm.get().nombres+  "  ha  sido creado.");
        return ok(participantes.render());
    }

   @Transactional(readOnly=true)
    public static Result edit(Integer numPersona) {
        Form<Persona> personasForm = form(Persona.class).fill(
            Persona.findById(numPersona)
        );
        return ok(editFormPersona.render(numPersona,personasForm));
    }
      
    @Transactional
    public static Result update(Integer numPersona) {
        Form<Persona> personasForm = form(Persona.class).bindFromRequest();
        if(personasForm.hasErrors()) {
            return badRequest(editFormPersona.render(numPersona, personasForm));
        }
        personasForm.get().update(numPersona);
        flash("success", "Persona " + personasForm.get().numPersona+ " ha sido actualizado");
        return redirect("/personas/list");
        
    }
      
    @Transactional
    public static Result delete(Integer numPersona) {
        Persona.findById(numPersona).delete();
        flash("success", "Persona Eliminada");
        return redirect("/personas/list");
    }
    
    
    
    public static Result login() {
        session().clear();
        Form<Login> formulario = form(Login.class);
        return ok(login.render(formulario));    
    }
    
    
    public static Result logout() {
        session().clear();
        return ok(seguridad.render());
    }

    @Transactional
    public static Result ingresar() {
    
        Form<Login> formulario = form(Login.class).bindFromRequest();
          if(formulario.hasErrors()) {
                return badRequest(login.render(formulario));
          } 
        if(formulario.get().login == "" || formulario.get().clave == "") {
            flash("invalid", "Debe ingresar usuario y clave");
            return badRequest(login.render(formulario));
        }

        Usuario user = Usuario.findById(formulario.get().login);

        if (user!=null){
            if (user.login.equals(formulario.get().login) && user.password.equals(formulario.get().clave)){
            flash("succes", "Bienvenido!!! "+user.nombreCompleto);
            session("login", user.login);
            session("user", user.nombreCompleto);
            }
            else{
                flash("invalid", "Usuario y/o clave incorrecto/s");
                return badRequest(login.render(formulario));
            }
        }
        else{
                flash("invalid", "Usuario y/o clave incorrecto/s");
                return badRequest(login.render(formulario));
            }
        
     
        return ok(seguridad.render());
        
    }    
        
}